#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

struct Trinomal
{
    double a;
    double b;
    double c;
};

void setCoefficients(Trinomal* tr, double a, double b, double c)
{
    tr->a = a;
    tr->b = b;
    tr->c = c;
}

char* getSolution(Trinomal tr)
{
    double d = pow(tr.b , 2) - 4 * tr.a * tr.c;
    const int STRING_LENGHT = 255;
    char* str = (char*) calloc(STRING_LENGHT, sizeof (char) );
    if (str == NULL)
    {
        exit(1);
        return (char*) "There\'s no memory";
    }
    if (tr.a != 0)
    {
        if (d > 0)
        {
            double x1, x2;
            x1 = (-tr.b - sqrt(d)) / (2*tr.a);
            x2 = (-tr.b + sqrt(d)) / (2*tr.a);
            sprintf (str, "x1 = %lg, x2 = %lg", x1, x2);
            if (x1*x2 != tr.c/tr.a || x1+x2 != -tr.b/tr.a) //theorem of Viet
            {
                sprintf (str, "%s\n%s", str , "WARNING! USE WITH CAUTION!!!");
            }
        }
        else if (d == 0)
        {
            double x = -tr.b / (2*tr.a);
            sprintf (str, "x = %lg", x);
            if (x*x != tr.c/tr.a || x*2 != -tr.b/tr.a) //theorem of Viet
            {
                sprintf (str, "%s\n%s", str , "WARNING! USE WITH CAUTION!!!");
            }
        }
        else
        {
            sprintf (str, "%s", "There\'s no roots.");
        }
    }
    else
    {
        if (tr.b == 0)
        {
            if (tr.c == 0)
            {
                sprintf (str, "%s", "X is in R");
            }
            else
            {
                sprintf (str, "%s", "There\'s no roots.");
            }
        }
        else
        {
            double x = -tr.c/tr.b;
            sprintf (str, "x = %lg", x);
        }
    }
    return str;
}

int main(void)
{
    Trinomal equ;
    double a = 0,b = 0, c = 0;
    scanf ("%lg %lg %lg", &a, &b, &c);
    setCoefficients(&equ , a , b , c);
    char* output = getSolution(equ);
    printf ("%s\n", output);
    free (output);
    return 0;
}
